﻿using Microsoft.Xna.Framework;

namespace RainEngine.SceneNodes
{
    public interface ISceneNodeLighting
    {
        /// <summary>
        /// 设置环境光颜色
        /// </summary>
        /// <param name="color">环境光颜色</param>
        void SetAmbientLightColor(Vector3 color);

        /// <summary>
        /// 设置光源是否可用
        /// </summary>
        /// <param name="lightIndex">光源索引，只能为0,1或2。</param>
        /// <param name="lightEnabled">是否可用</param>
        void SetLightEnabled(int lightIndex, bool lightEnabled);

        /// <summary>
        /// 设置光源类型
        /// </summary>
        /// <param name="lightIndex">光源索引，只能为0,1或2。</param>
        /// <param name="lightType">光源类型</param>
        void SetLightType(int lightIndex, float lightType);

        /// <summary>
        /// 设置光源中Vector3类型的参数，有颜色Color，方向Direction和位置Position
        /// </summary>
        /// <param name="lightIndex">光源索引，只能为0,1或2。</param>
        /// <param name="parameterName">参数名称，只能是Color，Direction或Position</param>
        /// <param name="value">要设置的值</param>
        void SetLightVector3(int lightIndex, string parameterName, Vector3 value);

        /// <summary>
        /// 设置光源中的SpotData属性
        /// </summary>
        /// <param name="lightIndex">光源索引，只能为0,1或2。</param>
        /// <param name="setSpotData">Vector4类型，四个分量分别对应range, falloff, theta和phi</param>
        void SetLightSpotData(int lightIndex, Vector4 setSpotData);
    }
}
